Logic analyzers and similar electronics devices employ some means of capturing input data, associating each sample of input data captured with a form of timing information so that the user of the device is provided with some indication as to when each data sample occurred. This timing information is generated typically by a digital counter that counts up to some maximum value before automatically starting again at zero, and then continuing the counting process.
FIG. 1 shows a typical data acquisition unit 100 of a logic analyzer from the prior art. A time tag generator 110, normally containing a digital counter as that mentioned above, generates a series of time tags that increase in value up to a maximum value before returning to zero. Also produced with each time tag is an overflow flag, which indicates when the counter has attained that maximum value and is restarting the count from zero.
The time tags and overflow flags are sampled by a data sampler 120, along with the current value of the input data to be captured, at the time a pulse on an associated input clock occurs. Normally, the data sampler 120 consists of enough simple memory latches or D-type flip-flops to store a single sample each of the input data, time tag and overflow flag.
A data filter 130 then examines each data sample from the data sampler 120 to determine if that data sample should be captured and stored for later use. Generally speaking, the user of the logic analyzer sets a predetermined data value that is to be compared with each sample of input data. If that value matches a predetermined portion of the sample of input data currently held by the data sampler 120, the data filter 130 captures that data sample, along with its associated time tag and overflow flag. Each time a sampled overflow flag is captured by the data filter 130, the data filter 130 causes the overflow flag in the time tag generator 110 to be reset. The functionality of the data filter 130 aids the user in capturing only data in which the user has particular interest. Selectively capturing the data in this fashion allows the user to ignore data that may otherwise obscure the actual data of interest.
Each newly captured sample of the input data, time tag, and overflow flag is then stored in a memory unit 140 for later use by the user. The data filter 130 initiates this event by forcing a valid flag to the memory unit 140 to become active. The data stored in memory unit 140 is then often displayed numerically or graphically to aid the user in determining the status of the captured data.
The overflow flags, as stored in the memory unit 140, provide a necessary indication as to how far the counter in the time tag generator 110 has progressed. For example, if one time tag in the memory unit 140 has a value N, and the following time tag has the value N+2, the overflow flag will indicate whether the second time tag is was actually captured only two time increments after the first, or whether the counter in the time tag generator 110 attained its maximum value and restarted at zero prior to reaching N+2. An active overflow flag associated with the second time tag would indicate that the second scenario applied in that case.
Unfortunately, such a scheme prevents detection of the scenario where the counter in the time tag generator 110 has overflowed more than once between captured data samples. In that instance, the samples of input data, time tags and overflow flags stored in the memory unit 140 will indicate that the counter will have overflowed only once, thereby allowing the time between the two input data samples to be miscalculated. An increase in the size of the counter employed in the time tag generator 110 may eliminate some instances of this occurrence, but such an enhancement is not a general purpose solution that is capable of dealing with arbitrary time intervals between captured input data samples.
Therefore, from the foregoing, a new data acquisition unit and method that allows for arbitrarily extensive delays between captured samples of input data would be advantageous.
Embodiments of the present invention, to be discussed in detail below, allow a data acquisition unit and method for properly tracking timing intervals between captured samples of input data that represent multiple overflows of a counter employed in a time tag generator. Instead of storing only captured input data samples, along with the timing information associated with that data sample, a special overflow state not specifically associated with a captured data sample is stored each time the counter has overflowed. As a result, embodiments of the present invention are capable of properly tracking an arbitrary number of overflows of the counter between consecutive captured input data samples, thereby eliminating the physical limitations of the time tag generator with essentially no impact on performance.
Other aspects and advantages of the invention will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, illustrating by way of example the principles of the invention.